<?php
/**
 * 管理人XMLコントロールモジュール
 */
require_once dirname(__FILE__) . '/../StaffController.php';
require_once APPLICATION_PATH . '/controllers/StaffController.php';

class Models_Staff_XMLController extends Models_StaffController
{
	/**
	 * コンストラクタ
	 * @param string $strFileName
	 */
	public function __construct( $strFileName='staff.xml' )
	{
		/**
		 * データファイル名指定にフォルダー指定がない場合
		* カレントディレクトリを付加する
		*/
		if ( dirname( $strFileName ) == '.' ) {
			$strFileName = $this->getDefaultSavePath() . $strFileName;
		}
		$this->_strFileName = $strFileName;
		
		/**
		 * データファイルが存在しない場合、スーパースタッフが登録されたデータファイルを作成する
		 */
		if (!file_exists($strFileName)) {
			$this->_createDataFile();
		}
		
		$this->loadFromFile($strFileName);
	}
	
	/**
	 * スーパースタッフが登録されているデータファイルを作成する
	 */
	protected function _createDataFile()
	{
		$this->add(self::VALUE_SUPER_STAFF_NAME, self::VALUE_SUPER_STAFF_NAME);
		$this->saveToFile();
	}
	
	/**
	 * カレント保存フォルダーパスに当該ソースのパスを返す
	 */
	public static function getDefaultSavePath()
	{
		$strResult = dirname( __FILE__ ) . '/databox/';
		$accountFolder = Models_Controller::getFolder();
		/*** アカウントフォルダー指定で当該フォルダーが未作成（新規アカウント）の場合造る */
		if ($accountFolder != '') {
			$strResult .= $accountFolder;
			/*** アカウントフォルダーがない */
			if (!file_exists($strResult)){
				/*** スタッフアカウント限定 */
				if (StaffController::isLogined()) {
					/*** フォルダー作成失敗判定 */
					if (!mkdir($strResult)){
						return FALSE;
					}
				}
			}
		}
		return $strResult;
	}
}
